#ifndef Mensagem_H
#define Mensagem_H

#include <string>
#include "Email.h"
#include "TempoSistema.h"
//! @details Classe que contem as informacoes necessarios para se determinar uma mensagem.
class Message
{
private:
    //! @param enviado Guarda o email de quem enviou a mensagem
    Email enviado;
    //! @param recebido Guarda o local de quem recebeu a mensagem, podendo ser um email ou "mural"
    string recebido;
    //! @param content Guarda o conteudo da mensagem
    string content;
    //! @param tempo Guarda o horario e data do momento em que a mensagem foi enviada
    TempoSistema tempo;
public:
    //! @details Construtor sem parametros
    Message(){}
    //! @details Construtor parcial, parametros string e TempoSistema
    Message(string&,TempoSistema&);
    //! @details Construtor completo
    Message(Email&,string&,TempoSistema&,string&);
    //! @details Retorna o atributo enviado
    //! @return Objeto Email
    Email getEnviado();
    //! @details Atribuidor do atributo enviado
    void setEnviado(Email&);
    //! @details Retorna o atributo recebido
    //! @return Objeto string
    string getRecebido();
    //! @details Atribuidor do atribudo recebido
    void setRecebido(string&);
    //! @details Retorna o atributo content
    //! @return Objeto string
    string getContent();
    //! @details Atribuidor do atributo content
    void setContent(string&);
    //! @details Retorna o atributo tempo
    //! @return Objeto TempoSistema
    TempoSistema getTempo();
    //! @details Atribuidor do atributo tempo
    void setTempo(TempoSistema&);
    //! @details Atribuidor completo
    void setBasicInfo(Email&,string&,TempoSistema&,string&);
    //! @details Atribuidor parcial, parametros string(content),TempoSistema(tempo)
    void setBasicInfo(string&,TempoSistema&);
};

inline Email Message::getEnviado()
{
    return enviado;
}

inline string Message::getRecebido()
{
    return recebido;
}

inline string Message::getContent()
{
    return content;
}

inline TempoSistema Message::getTempo()
{
    return tempo;
}

#endif
